package com.liangtian.mdm.material.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.github.pagehelper.PageInfo;
import com.liangtian.mdm.material.model.WlwlTzlUpdate;
import com.liangtian.mdm.material.model.WlwlUpdate;

public interface WlwlUpdateService {

    @SuppressWarnings("rawtypes")
    public PageInfo weiHuWlwlUpdatePage(Map<String, Object> map);

    public Map<String, Object> getWlwlUpdateById(WlwlUpdate update);

    public int deleteWlwlUpdateByIdS(Map<String, Object> map);

    public int insertWlwlUpdate(Map<String, Object> cond);

    /**
     * 物料变更数据
     *
     * @param cond
     * @return
     * @author jyh
     * @date 2017-02-20
     */
    @SuppressWarnings("rawtypes")
    public PageInfo wlwlbianGeng(Map<String, Object> cond);

    /**
     * 修改物料变更数据
     *
     * @param cond
     * @return
     * @author jyh
     * @date 2017-02-22
     */
    public int updateWlwlUpdate(Map<String, Object> cond);

    /**
     * 根据物料变更表数据更新物料表数据
     *
     * @param cond
     * @return
     * @author jyh
     * @date 2017-03-01
     */
    public int updateWlwlByUpdate(Map<String, Object> cond);

    /**
     * 根据物料变更表数据冻结/解冻物料表数据
     *
     * @param cond
     * @return
     * @author jyh
     * @date 2017-03-01
     */
    public int updateWlwlStatusByUpdate(Map<String, Object> cond);

    /**
     * 根据ID集合查询WLBM集合
     *
     * @param list
     * @return
     * @author jyh
     * @date 2017-03-03
     */
    public List<String> getWlwlUpdateWlbmByIds(Map<String, Object> cond);

    /**
     * 根据物料编码获取物料变更记录
     *
     * @param wlbm
     * @return
     * @author jyh
     * @date 2017-03-24
     */
    public List<WlwlUpdate> getWlwlUpdateByWlbm(String wlbm);

    /**
     * 根据id获取物料变更表记录
     *
     * @param id
     * @return
     * @author jyh
     * @date 2018-01-17
     */
    public WlwlUpdate getWlwlUpdateById(String id);

    /**
     * 根据条件查询物料变更表的特征量
     *
     * @param cond
     * @return
     * @author jyh
     * @date 2018-01-17
     */
    public List<WlwlTzlUpdate> getWlwlTzlUpdate(Map<String, Object> cond);

    /**
     * 根据选择的待修改长描述的物料，往各相关的变更表中写入数据，利用存储过程完成。
     *
     * @param wlbms
     * @param userid
     * @param bg_type 变更的类型
     * @return 执行是否成功
     * @author jyh
     * @date 2018-01-17
     */
    public boolean insertWlUpdateDataForQcModify(Map<String, Object> cond);

    /**
     * 物料长描述修改保存，同时更新特征量数据
     *
     * @param map         key:物料需要更新的字段，value:更新后的值
     * @param wlTzlUpdStr 包含特征量信息的字符串
     * @param wlLanUpdStr 包含物料多语言信息的字符串
     * @param attachIds   附件的id
     * @author jyh
     * @date 2018-01-25
     */
    public void updateWlWlQc(Map<String, Object> map, String wlTzlUpdStr,
                             String wlLanUpdStr, HttpServletRequest request);

    /**
     * 物料长描述变更校验
     *
     * @param map
     * @return
     * @author jyh
     * @date 2018-01-25
     */
    public String wlQcUpdateCheckout(Map<String, Object> map);

    /**
     * 物料长描述变更审核通过
     *
     * @param map
     * @return
     * @author jyh
     * @date 2018-01-25
     */
    public String wlQcUpdatePass(Map<String, Object> map);

    public List<String> getWlwlUpdateIdByWlDrId(String wldrid);

    public String getMaxUpdIdByWlDrId(String wldrid);

    @SuppressWarnings("rawtypes")
    public PageInfo getWlwlUpdatePageByWlbm(Map<String, Object> map);
}
